home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / dev / misc / LEDA_gene.lha / LEDA-3.1c-generic / incl / LEDA / impl / b_heap.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-05  |  1.6 KB  |  85 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  3.1c
  4. +
  5. +
  6. +  b_heap.h
  7. +
  8. +
  9. +  Copyright (c) 1994  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15. #ifndef LEDA_BHEAP_H
  16. #define LEDA_BHEAP_H
  17.  
  18. //------------------------------------------------------------------------------
  19. // b_heap: bounded heaps with integer keys in [a..b]
  20. //------------------------------------------------------------------------------
  21.  
  22. #include <LEDA/basic.h>
  23. #include <LEDA/list.h>
  24. #include <LEDA/array.h>
  25.  
  26. class b_heap_node {
  27.  
  28. friend class b_heap;
  29. friend void print_b_heap_item(b_heap_node*);
  30.  
  31. int key;
  32. GenPtr info;
  33. list_item loc;
  34.  
  35. b_heap_node(int k, GenPtr i ) 
  36.   key = k; info = i; loc = 0; }
  37.  
  38.   LEDA_MEMORY(b_heap_node)
  39.  
  40. };
  41.  
  42. typedef b_heap_node* b_heap_item;
  43.  
  44. typedef list<b_heap_item>* b_heap_bucket;
  45.  
  46.  
  47. class b_heap {
  48.  
  49.     int min;
  50.     int max;
  51.     int low;
  52.     int high;
  53.     
  54.     array<b_heap_bucket>  T;
  55.  
  56.  
  57. public:
  58.  
  59. b_heap(int a, int b);
  60. ~b_heap() { clear(); }
  61. b_heap_item insert(int key, GenPtr info) ;
  62.  
  63. b_heap_item find_min();
  64. b_heap_item find_max();
  65. GenPtr del_min();
  66. GenPtr del_max();
  67. b_heap_item decrease_key(b_heap_item it, int k);
  68. b_heap_item increase_key(b_heap_item it, int k);
  69.  
  70. void delete_item(b_heap_item it);
  71. void clear();
  72.  
  73. GenPtr info(b_heap_item it) { return it->info; }
  74. int key(b_heap_item it)  { return it->key; }
  75. int empty()              { return (find_min()==0) ? true : false; }
  76.  
  77. void print();
  78.  
  79. };
  80.  
  81. #endif
  82.  
  83.